package a66weding.com.jiehuntong.common.utils;


import java.math.BigDecimal;
import java.util.Hashtable;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @version :
 * @creator : AxDu
 * @create-time : 2016/6/28
 * @description :
 * 改版数字转为大写
 */
public class ChineseUpperCaser  {

    /**
     * 用于存储整数部分
     */
    private String integerPart;

    /**
     * 用于存储小数部分
     */
    private String floatPart;

    /**
     * 用于存储0-9大写的哈希表
     */
    private static  Map<Integer,String> ZerotoNineHt;

    /**
     * 用于存储十百千大写的哈希表
     */
    private static  Map<Integer,String> thHuTenHt;

    /**
     * 用于存储万亿兆大写的哈希表
     */
    private static Map<Integer,String> wanYiZhaoHt;

    static{
        ZerotoNineHt=new Hashtable<Integer,String>();

        ZerotoNineHt.put(0, "零");
        ZerotoNineHt.put(1, "一");
        ZerotoNineHt.put(2, "二");
        ZerotoNineHt.put(3, "三");
        ZerotoNineHt.put(4, "四");
        ZerotoNineHt.put(5, "五");
        ZerotoNineHt.put(6, "六");
        ZerotoNineHt.put(7, "七");
        ZerotoNineHt.put(8, "八");
        ZerotoNineHt.put(9, "九");

        thHuTenHt=new Hashtable<Integer,String>();
        thHuTenHt.put(0, "");
        thHuTenHt.put(1, "十");
        thHuTenHt.put(2, "百");
        thHuTenHt.put(3, "千");

        wanYiZhaoHt=new Hashtable<Integer,String>();
        wanYiZhaoHt.put(0, "");
        wanYiZhaoHt.put(1, "万");
        wanYiZhaoHt.put(2, "亿");
        wanYiZhaoHt.put(3, "兆");
    }
    
    

    
    /**
     * 构造函数
     *
     * @throws NumberFormatException
     */
    public ChineseUpperCaser() {
        
    }

    
    public static String paseIntegerToStr(int num) throws NumberFormatException{
    	String str="";
    	String strnum=""+num;
    	int gewei=1;
    	int shiwei=1;
    	int baiwei=1;
    	int qianwei=1;
    	int wanwei=1;
    	String strgewei="零";
    	String strshiwei="十";
    	String strbaiwei="百";
    	String strqianwei="千";
    	char[] charArray = strnum.toCharArray();
    	System.out.println("strnum="+strnum);
    	switch(strnum.length()){
    			case 1:
    				strnum = ZerotoNineHt.get(num);
    				break;
    			case 2:
    				shiwei =Integer.valueOf(charArray[0]+"") ;
    				gewei=	Integer.valueOf(charArray[1]+"");
    				strgewei=ZerotoNineHt.get(gewei);
    				strshiwei=ZerotoNineHt.get(shiwei)+"十";
    				if(shiwei==1){
    					strshiwei="十";
    				}
    				if(gewei==0){
    					strgewei="";
    				}
    				strnum=strshiwei+  strgewei;
    				break;
    			case 3:
    				baiwei =Integer.valueOf(charArray[0]+"");
    				 shiwei=Integer.valueOf(charArray[1]+"");
    				 gewei =Integer.valueOf(charArray[2]+"");
    				 strshiwei= ZerotoNineHt.get(shiwei);
    				 strgewei=ZerotoNineHt.get(gewei);
    				System.out.println("baiwei="+baiwei+" shiwei="+shiwei+" gewei="+gewei);
    				if(gewei==0){
    					 strgewei="十";
    				}
    				if(shiwei==0){
    					 strshiwei="零";
    				}
    				if(gewei==0 && shiwei==0){
    					strgewei="";
    					strshiwei="";
    				}
    				
    				strnum=ZerotoNineHt.get(baiwei)+ "百" + strshiwei+ strgewei;
    				break;
    			case 4:
    				
    			case 5:
    				
    				default :
    					strnum="0";	
    	}
    	
    	
    	return strnum;
    }


}
